package cn.bxshey.modules_commodity.service;

import cn.bxshey.modules_commodity.dto.commodity.*;
import cn.bxshey.modules_commodity.vo.commodity.CartDetailVO;
import cn.bxshey.modules_commodity.vo.commodity.DetailVO;
import cn.bxshey.modules_commodity.vo.commodity.PaginatedQueriesVO;
import com.fasterxml.jackson.core.JsonProcessingException;

import java.io.IOException;
import java.util.List;

/**
 * @作者：不想说话而已
 * @Date：2024/1/30 14:40
 */
public interface CommodityService {

    /**
     * 商品--分页查询
     *
     * @param dto 分页查询参数
     * @return 分页商品数据
     */
    List<PaginatedQueriesVO> queryPage(PaginatedQueriesDTO dto);

    /**
     * 商品--新增
     *
     * @param dto 新增参数
     * @return 成功个数
     */
    Integer addCommodity(AddCommodityDTO dto);

    /**
     * 商品--更新(不更新规格)
     *
     * @param dto 更新参数
     * @return 成功个数
     */
    Integer updateCommodity(UpdateCommodityDTO dto);

    /**
     * 商品--更新商品规格
     *
     * @param dto 更新参数
     * @return 成功个数
     */
    Integer updateCommoditySpecification(UpdateCommoditySpecificationDto dto);

    /**
     * 商品--新增商品规格
     *
     * @param dto 新增参数
     * @return 成功个数
     */
    Integer addCommoditySpecification(AddCommoditySpecificationDTO dto);

    /**
     * 商品--根据id查询商品内容详情
     *
     * @param id 商品id
     * @return 商品详情内容
     */
    DetailVO commodityById(String id);

    /**
     * 商品--加入购物车
     * @param id 用户id
     * @param dto 商品id、规格id、数量
     * @return 商品详情内容
     */
    Long addCart(String id, AddCartDTO dto) throws JsonProcessingException;

    /**
     * 商品--获取购物车信息
     * @param id 用户id
     * @return 商品详情内容
     */
   List<CartDetailVO> cartDetail(Long id) throws IOException;

    /**
     * 商品--结算
     * @param id 用户id
     * @param settlementDTOS 商品id、商品规格id、商品数量,优惠价id
     * @return
     */
    Object settlement(Long id, List<SettlementDTO> settlementDTOS);


}
